﻿/*
实验三： 栈和队列实验

一．.实验目的
     巩固栈和队列数据结构，学会运用栈和队列。
	 1.回顾栈和队列的逻辑结构和受限操作特点，栈和队列的物理存储结构和常见操作。
	 2.学习运用栈和队列的知识来解决实际问题。
	 3.进一步巩固程序调试方法。
	 4.进一步巩固模板程序设计。

	 二．实验时间
	    准备时间为第5周到第6周，具体集中实验时间为6周第2次课。2个学时。

		三．.实验内容
		1.自己选择顺序或链式存储结构，定义一个空栈类，并定义入栈、出栈、取栈元素基本操作。然后在主程序中对给定的N个数据进行验证，输出各个操作结果。
		2.自己选择顺序或链式存储结构，定义一个空栈队列，并定义入栈、出栈、取栈元素基本操作。然后在主程序中对给定的N个数据进行验证，输出各个操作结果。
		3.编程实现一个十进制数转换成二进制数。要求，要主程序中输出一个10进度数，输出其对应的2进制数序列。
		    前两题是必做题，第3题是选做题。*/
#define _CRT_SECURE_NO_WARNINGS 1
#include "seqstack.h"
int main()
{
	system("color 02");
	SeqStack s;
	//初始化
	printf("第一个操作：初始化\n");
	InitStack(&s);
	//入栈（压栈）
	printf("\n");
	printf("第二个操作：入栈（压栈）\n");
	ElemType x;
	for (int i = 1; i <= 5; i++)
	{
		printf("请输入要入栈的元素：");
		scanf("%d", &x);
		if (Push(&s, x) == 1){ printf("%d入栈成功!\n",x); }   
	}
	show(&s);//遍历
	printf("\n");
	//出栈(弹栈):出栈顶元素
	printf("\n");
	printf("第三个操作：出栈(弹栈)):出栈顶元素\n");
	ElemType e;//用于接收弹出来的栈顶值
	for (int i = s.top - 1; i >= 0; i--)
	{
		if (Pop(&s, &e) == 1){printf("将栈顶元素 %d 弹出\n",e);}
		show(&s);//遍历
	}
	//取栈顶元素	
	printf("\n");
	printf("第四个操作：取栈顶元素\n");
	if (GetStackElem(&s, &e) == 1) 
	printf("所取出的栈顶元素为: %d",e);
	system("pause");
	return 0;
}